home *** CD-ROM | disk | FTP | other *** search
- Class List :Collection ! elements !
- [
- with: firstElement ! newList !
- newList <- self new.
-
- newList add: firstElement.
-
- ^ newList
- |
- add: anElement
- elements <- Link value: anElement next: elements.
- ^ anElement
- |
- addLast: anElement
- elements isNil
- ifTrue: [ self add: anElement ]
- ifFalse: [ elements addLast: anElement ].
-
- ^ anElement
- |
- addAll: aCollection
- aCollection do: [ :element | self addLast: element ]
- |
- copy
- ^ self asList
- |
- first
- ^ elements notNil
- ifTrue: [ elements value ]
- ifFalse: [ self error: 'trying to remove from an empty list ']
- |
- isEmpty
- ^ elements isNil
- |
- removeFirst
- elements isNil
- ifTrue: [ self error: 'removing first element from empty list']
- ifFalse: [ elements <- elements next ]
- |
- remove: anElement
- self remove: anElement
- ifAbsent: [ self error: 'removing element not in collection' ]
- |
- reverse | newList |
- newList <- List new.
-
- self do: [ :element | newList add: element ].
-
- ^ newList
- |
- remove: anElement ifAbsent: exceptionBlock
- elements isNil
- ifTrue: [ exceptionBlock value ]
- ifFalse: [ elements remove: anElement ifAbsent: exceptionBlock ]
- |
- do: aBlock
- ^ elements notNil ifTrue: [ elements do: aBlock ]
- |
- reverseDo: aBlock
- ^ elements notNil ifTrue: [ elements reverseDo: aBlock ]
- |
- select: testBlock | newList |
- newList <- List new.
-
- self reverseDo: [:element | (testBlock value: element)
- ifTrue: [ newList add: element ]
- ].
- ^ newList
- ]
-